--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
tests/frontend/NomadNetworkPage.test.js bce42bcdce0e7d2c6d78228e864a4cd1d974cc82 (bce42bcd) Text, 37.38 KB
Tff7b72import Tb4b4b4{ Te6edf3mount Tb4b4b4} Tff7b72from Ta5d6ff"@vue/test-utils"Tb4b4b4;
Tff7b72import Tb4b4b4{ Te6edf3describeTb4b4b4, Te6edf3itTb4b4b4, Te6edf3expectTb4b4b4, Te6edf3viTb4b4b4, Te6edf3beforeEachTb4b4b4, Te6edf3afterEach Tb4b4b4} Tff7b72from Ta5d6ff"vitest"Tb4b4b4;
Tff7b72import Te6edf3MicronParser Tff7b72from Ta5d6ff"@/js/MicronParser.js"Tb4b4b4;
T8b949e// Mock vuetify components before importing the component under test
Te6edf3viTb4b4b4.Te6edf3mockTb4b4b4(Ta5d6ff"vuetify/components/VTooltip"Tb4b4b4, Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4(Tb4b4b4{
Te6edf3VTooltipTff7b72: Tb4b4b4{
Te6edf3nameTff7b72: Ta5d6ff"VTooltip"Tb4b4b4,
Te6edf3templateTff7b72: Ta5d6ff'<div class="v-tooltip-stub"><slot /></div>'Tb4b4b4,
Tb4b4b4}Tb4b4b4,
Tb4b4b4}Tb4b4b4)Tb4b4b4)Tb4b4b4;
Tff7b72import Te6edf3NomadNetworkPage Tff7b72from Ta5d6ff"@/components/nomadnetwork/NomadNetworkPage.vue"Tb4b4b4;
Tff7b72import Te6edf3ToastUtils Tff7b72from Ta5d6ff"@/js/ToastUtils"Tb4b4b4;
Te6edf3viTb4b4b4.Te6edf3mockTb4b4b4(Ta5d6ff"@/js/ToastUtils"Tb4b4b4, Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4(Tb4b4b4{
Tff7b72defaultTff7b72: Tb4b4b4{
Te6edf3successTff7b72: Te6edf3viTb4b4b4.Te6edf3fnTb4b4b4(Tb4b4b4)Tb4b4b4,
Te6edf3errorTff7b72: Te6edf3viTb4b4b4.Te6edf3fnTb4b4b4(Tb4b4b4)Tb4b4b4,
Te6edf3warningTff7b72: Te6edf3viTb4b4b4.Te6edf3fnTb4b4b4(Tb4b4b4)Tb4b4b4,
Te6edf3infoTff7b72: Te6edf3viTb4b4b4.Te6edf3fnTb4b4b4(Tb4b4b4)Tb4b4b4,
Tb4b4b4}Tb4b4b4,
Tb4b4b4}Tb4b4b4)Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3wsMessageHandlers Tff7b72= Tb4b4b4[Tb4b4b4]Tb4b4b4;
Te6edf3viTb4b4b4.Te6edf3mockTb4b4b4(Ta5d6ff"@/js/WebSocketConnection"Tb4b4b4, Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4(Tb4b4b4{
Tff7b72defaultTff7b72: Tb4b4b4{
Te6edf3sendTff7b72: Te6edf3viTb4b4b4.Te6edf3fnTb4b4b4(Tb4b4b4)Tb4b4b4,
Te6edf3onTff7b72: Te6edf3viTb4b4b4.Te6edf3fnTb4b4b4(Tb4b4b4(Te6edf3eventTb4b4b4, Te6edf3handlerTb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72if Tb4b4b4(Te6edf3event Tff7b72=== Ta5d6ff"message"Tb4b4b4) Tb4b4b4{
Te6edf3wsMessageHandlersTb4b4b4.Te6edf3pushTb4b4b4(Te6edf3handlerTb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}Tb4b4b4)Tb4b4b4,
Te6edf3offTff7b72: Te6edf3viTb4b4b4.Te6edf3fnTb4b4b4(Tb4b4b4(Te6edf3eventTb4b4b4, Te6edf3handlerTb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72const Te6edf3index Tff7b72= Te6edf3wsMessageHandlersTb4b4b4.Te6edf3indexOfTb4b4b4(Te6edf3handlerTb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3index Tff7b72>= T79c0ff0Tb4b4b4) Tb4b4b4{
Te6edf3wsMessageHandlersTb4b4b4.Te6edf3spliceTb4b4b4(Te6edf3indexTb4b4b4, T79c0ff1Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}Tb4b4b4)Tb4b4b4,
Tb4b4b4}Tb4b4b4,
Tb4b4b4}Tb4b4b4)Tb4b4b4)Tb4b4b4;
Te6edf3describeTb4b4b4(Ta5d6ff"NomadNetworkPage.vue"Tb4b4b4, Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72let Te6edf3axiosMockTb4b4b4;
Te6edf3beforeEachTb4b4b4(Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Te6edf3axiosMock Tff7b72= Tb4b4b4{
Te6edf3getTff7b72: Te6edf3viTb4b4b4.Te6edf3fnTb4b4b4(Tb4b4b4)Tb4b4b4,
Te6edf3postTff7b72: Te6edf3viTb4b4b4.Te6edf3fnTb4b4b4(Tb4b4b4)Tb4b4b4,
Tff7b72deleteTff7b72: Te6edf3viTb4b4b4.Te6edf3fnTb4b4b4(Tb4b4b4)Tb4b4b4,
Tb4b4b4}Tb4b4b4;
Tffa657windowTb4b4b4.Te6edf3api Tff7b72= Te6edf3axiosMockTb4b4b4;
Te6edf3wsMessageHandlersTb4b4b4.Te6edf3length Tff7b72= T79c0ff0Tb4b4b4;
Te6edf3viTb4b4b4.Te6edf3clearAllMocksTb4b4b4(Tb4b4b4)Tb4b4b4;
Te6edf3axiosMockTb4b4b4.Te6edf3getTb4b4b4.Te6edf3mockImplementationTb4b4b4(Tb4b4b4(Te6edf3urlTb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72if Tb4b4b4(Te6edf3url Tff7b72=== Ta5d6ff"/api/v1/favourites"Tb4b4b4) Tff7b72return Tffa657PromiseTb4b4b4.Te6edf3resolveTb4b4b4(Tb4b4b4{ Te6edf3dataTff7b72: Tb4b4b4{ Te6edf3favouritesTff7b72: Tb4b4b4[Tb4b4b4] Tb4b4b4} Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3url Tff7b72=== Ta5d6ff"/api/v1/announces"Tb4b4b4) Tff7b72return Tffa657PromiseTb4b4b4.Te6edf3resolveTb4b4b4(Tb4b4b4{ Te6edf3dataTff7b72: Tb4b4b4{ Te6edf3announcesTff7b72: Tb4b4b4[Tb4b4b4] Tb4b4b4} Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3urlTb4b4b4.Te6edf3includesTb4b4b4(Ta5d6ff"/path"Tb4b4b4)Tb4b4b4) Tff7b72return Tffa657PromiseTb4b4b4.Te6edf3resolveTb4b4b4(Tb4b4b4{ Te6edf3dataTff7b72: Tb4b4b4{ Te6edf3pathTff7b72: Tb4b4b4{ Te6edf3hopsTff7b72: T79c0ff1 Tb4b4b4} Tb4b4b4} Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tff7b72return Tffa657PromiseTb4b4b4.Te6edf3resolveTb4b4b4(Tb4b4b4{ Te6edf3dataTff7b72: Tb4b4b4{Tb4b4b4} Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Te6edf3afterEachTb4b4b4(Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72delete Tffa657windowTb4b4b4.Te6edf3apiTb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3mountNomadNetworkPage Tff7b72= Tb4b4b4(Te6edf3props Tff7b72= Tb4b4b4{ Te6edf3destinationHashTff7b72: Ta5d6ff"" Tb4b4b4}Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72return Te6edf3mountTb4b4b4(Te6edf3NomadNetworkPageTb4b4b4, Tb4b4b4{
Te6edf3propsTb4b4b4,
Tffa657globalTff7b72: Tb4b4b4{
Te6edf3mocksTff7b72: Tb4b4b4{
Te6edf3$tTff7b72: Tb4b4b4(Te6edf3keyTb4b4b4) Tb4b4b4=> Te6edf3keyTb4b4b4,
Te6edf3$routeTff7b72: Tb4b4b4{ Te6edf3queryTff7b72: Tb4b4b4{Tb4b4b4} Tb4b4b4}Tb4b4b4,
Te6edf3$routerTff7b72: Tb4b4b4{ Te6edf3replaceTff7b72: Te6edf3viTb4b4b4.Te6edf3fnTb4b4b4(Tb4b4b4) Tb4b4b4}Tb4b4b4,
Tb4b4b4}Tb4b4b4,
Te6edf3stubsTff7b72: Tb4b4b4{
Te6edf3MaterialDesignIconTff7b72: Tb4b4b4{
Te6edf3templateTff7b72: Ta5d6ff'<div class="mdi-stub" :data-icon-name="iconName"></div>'Tb4b4b4,
Te6edf3propsTff7b72: Tb4b4b4[Ta5d6ff"iconName"Tb4b4b4]Tb4b4b4,
Tb4b4b4}Tb4b4b4,
Te6edf3LoadingSpinnerTff7b72: Tff7b72trueTb4b4b4,
Te6edf3NomadNetworkSidebarTff7b72: Tb4b4b4{
Te6edf3templateTff7b72: Ta5d6ff'<div class="sidebar-stub"></div>'Tb4b4b4,
Te6edf3propsTff7b72: Tb4b4b4[Ta5d6ff"nodes"Tb4b4b4, Ta5d6ff"selectedDestinationHash"Tb4b4b4]Tb4b4b4,
Tb4b4b4}Tb4b4b4,
Te6edf3NomadBrowserContextMenuTff7b72: Tff7b72trueTb4b4b4,
Te6edf3VTooltipTff7b72: Tb4b4b4{
Te6edf3templateTff7b72: Ta5d6ff'<div class="v-tooltip-stub"><slot /></div>'Tb4b4b4,
Tb4b4b4}Tb4b4b4,
Tb4b4b4}Tb4b4b4,
Tb4b4b4}Tb4b4b4,
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4;
Te6edf3itTb4b4b4(Ta5d6ff"displays 'No active node' by default"Tb4b4b4, Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72const Te6edf3wrapper Tff7b72= Te6edf3mountNomadNetworkPageTb4b4b4(Tb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3wrapperTb4b4b4.Te6edf3textTb4b4b4(Tb4b4b4)Tb4b4b4)Tb4b4b4.Te6edf3toContainTb4b4b4(Ta5d6ff"nomadnet.no_active_node"Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Te6edf3itTb4b4b4(Ta5d6ff"debounces node search and passes search param to announces API"Tb4b4b4, Tff7b72async Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Te6edf3viTb4b4b4.Te6edf3useFakeTimersTb4b4b4(Tb4b4b4)Tb4b4b4;
Te6edf3axiosMockTb4b4b4.Te6edf3isCancel Tff7b72= Te6edf3viTb4b4b4.Te6edf3fnTb4b4b4(Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tff7b72falseTb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3wrapper Tff7b72= Te6edf3mountNomadNetworkPageTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72await Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3$nextTickTb4b4b4(Tb4b4b4)Tb4b4b4;
Te6edf3axiosMockTb4b4b4.Te6edf3getTb4b4b4.Te6edf3mockClearTb4b4b4(Tb4b4b4)Tb4b4b4;
Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3onNodesSearchChangedTb4b4b4(Ta5d6ff"nodequery"Tb4b4b4)Tb4b4b4;
Tff7b72await Te6edf3viTb4b4b4.Te6edf3advanceTimersByTimeAsyncTb4b4b4(T79c0ff500Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3calls Tff7b72= Te6edf3axiosMockTb4b4b4.Te6edf3getTb4b4b4.Te6edf3mockTb4b4b4.Te6edf3callsTb4b4b4.Te6edf3filterTb4b4b4(Tb4b4b4(Te6edf3cTb4b4b4) Tb4b4b4=> Te6edf3cTb4b4b4[T79c0ff0Tb4b4b4] Tff7b72=== Ta5d6ff"/api/v1/announces"Tb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3callsTb4b4b4.Te6edf3lengthTb4b4b4)Tb4b4b4.Te6edf3toBeGreaterThanOrEqualTb4b4b4(T79c0ff1Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3last Tff7b72= Te6edf3callsTb4b4b4[Te6edf3callsTb4b4b4.Te6edf3length Tff7b72- T79c0ff1Tb4b4b4]Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3lastTb4b4b4[T79c0ff1Tb4b4b4]Tb4b4b4.Te6edf3paramsTb4b4b4.Te6edf3aspectTb4b4b4)Tb4b4b4.Te6edf3toBeTb4b4b4(Ta5d6ff"nomadnetwork.node"Tb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3lastTb4b4b4[T79c0ff1Tb4b4b4]Tb4b4b4.Te6edf3paramsTb4b4b4.Te6edf3searchTb4b4b4)Tb4b4b4.Te6edf3toBeTb4b4b4(Ta5d6ff"nodequery"Tb4b4b4)Tb4b4b4;
Te6edf3viTb4b4b4.Te6edf3useRealTimersTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Te6edf3itTb4b4b4(Ta5d6ff"tracks isSearchingNodes while the debounce and request are pending, clearing it once resolved"Tb4b4b4, Tff7b72async Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Te6edf3viTb4b4b4.Te6edf3useFakeTimersTb4b4b4(Tb4b4b4)Tb4b4b4;
Te6edf3axiosMockTb4b4b4.Te6edf3isCancel Tff7b72= Te6edf3viTb4b4b4.Te6edf3fnTb4b4b4(Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tff7b72falseTb4b4b4)Tb4b4b4;
Tff7b72let Te6edf3resolveAnnouncesTb4b4b4;
Te6edf3axiosMockTb4b4b4.Te6edf3getTb4b4b4.Te6edf3mockImplementationTb4b4b4(Tb4b4b4(Te6edf3urlTb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72if Tb4b4b4(Te6edf3url Tff7b72=== Ta5d6ff"/api/v1/favourites"Tb4b4b4) Tff7b72return Tffa657PromiseTb4b4b4.Te6edf3resolveTb4b4b4(Tb4b4b4{ Te6edf3dataTff7b72: Tb4b4b4{ Te6edf3favouritesTff7b72: Tb4b4b4[Tb4b4b4] Tb4b4b4} Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3url Tff7b72=== Ta5d6ff"/api/v1/announces"Tb4b4b4) Tb4b4b4{
Tff7b72return Tff7b72new Tffa657PromiseTb4b4b4(Tb4b4b4(Te6edf3resolveTb4b4b4) Tb4b4b4=> Tb4b4b4{
Te6edf3resolveAnnounces Tff7b72= Te6edf3resolveTb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tff7b72return Tffa657PromiseTb4b4b4.Te6edf3resolveTb4b4b4(Tb4b4b4{ Te6edf3dataTff7b72: Tb4b4b4{Tb4b4b4} Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3wrapper Tff7b72= Te6edf3mountNomadNetworkPageTb4b4b4(Tb4b4b4)Tb4b4b4;
T8b949e// the initial mount fetch is in flight
Te6edf3expectTb4b4b4(Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3isSearchingNodesTb4b4b4)Tb4b4b4.Te6edf3toBeTb4b4b4(Tff7b72trueTb4b4b4)Tb4b4b4;
Te6edf3resolveAnnouncesTb4b4b4(Tb4b4b4{ Te6edf3dataTff7b72: Tb4b4b4{ Te6edf3announcesTff7b72: Tb4b4b4[Tb4b4b4]Tb4b4b4, Te6edf3total_countTff7b72: T79c0ff0 Tb4b4b4} Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tff7b72await Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3$nextTickTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72await Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3$nextTickTb4b4b4(Tb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3isSearchingNodesTb4b4b4)Tb4b4b4.Te6edf3toBeTb4b4b4(Tff7b72falseTb4b4b4)Tb4b4b4;
Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3onNodesSearchChangedTb4b4b4(Ta5d6ff"nodequery"Tb4b4b4)Tb4b4b4;
T8b949e// indicator shows immediately, even before the debounce fires
Te6edf3expectTb4b4b4(Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3isSearchingNodesTb4b4b4)Tb4b4b4.Te6edf3toBeTb4b4b4(Tff7b72trueTb4b4b4)Tb4b4b4;
Tff7b72await Te6edf3viTb4b4b4.Te6edf3advanceTimersByTimeAsyncTb4b4b4(T79c0ff500Tb4b4b4)Tb4b4b4;
T8b949e// debounce elapsed, request is now in flight and still pending
Te6edf3expectTb4b4b4(Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3isSearchingNodesTb4b4b4)Tb4b4b4.Te6edf3toBeTb4b4b4(Tff7b72trueTb4b4b4)Tb4b4b4;
Te6edf3resolveAnnouncesTb4b4b4(Tb4b4b4{ Te6edf3dataTff7b72: Tb4b4b4{ Te6edf3announcesTff7b72: Tb4b4b4[Tb4b4b4]Tb4b4b4, Te6edf3total_countTff7b72: T79c0ff0 Tb4b4b4} Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tff7b72await Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3$nextTickTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72await Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3$nextTickTb4b4b4(Tb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3isSearchingNodesTb4b4b4)Tb4b4b4.Te6edf3toBeTb4b4b4(Tff7b72falseTb4b4b4)Tb4b4b4;
Te6edf3viTb4b4b4.Te6edf3useRealTimersTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Te6edf3itTb4b4b4(Ta5d6ff"does not clear isSearchingNodes for a stale request superseded by a newer search"Tb4b4b4, Tff7b72async Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Te6edf3viTb4b4b4.Te6edf3useFakeTimersTb4b4b4(Tb4b4b4)Tb4b4b4;
Te6edf3axiosMockTb4b4b4.Te6edf3isCancel Tff7b72= Te6edf3viTb4b4b4.Te6edf3fnTb4b4b4(Tb4b4b4(Te6edf3eTb4b4b4) Tb4b4b4=> Te6edf3eTff7b72?Tb4b4b4.Te6edf3isCancelled Tff7b72=== Tff7b72trueTb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3pending Tff7b72= Tb4b4b4[Tb4b4b4]Tb4b4b4;
Te6edf3axiosMockTb4b4b4.Te6edf3getTb4b4b4.Te6edf3mockImplementationTb4b4b4(Tb4b4b4(Te6edf3urlTb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72if Tb4b4b4(Te6edf3url Tff7b72=== Ta5d6ff"/api/v1/favourites"Tb4b4b4) Tff7b72return Tffa657PromiseTb4b4b4.Te6edf3resolveTb4b4b4(Tb4b4b4{ Te6edf3dataTff7b72: Tb4b4b4{ Te6edf3favouritesTff7b72: Tb4b4b4[Tb4b4b4] Tb4b4b4} Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3url Tff7b72=== Ta5d6ff"/api/v1/announces"Tb4b4b4) Tb4b4b4{
Tff7b72return Tff7b72new Tffa657PromiseTb4b4b4(Tb4b4b4(Te6edf3resolveTb4b4b4, Te6edf3rejectTb4b4b4) Tb4b4b4=> Tb4b4b4{
Te6edf3pendingTb4b4b4.Te6edf3pushTb4b4b4(Tb4b4b4{ Te6edf3resolveTb4b4b4, Te6edf3reject Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tff7b72return Tffa657PromiseTb4b4b4.Te6edf3resolveTb4b4b4(Tb4b4b4{ Te6edf3dataTff7b72: Tb4b4b4{Tb4b4b4} Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3wrapper Tff7b72= Te6edf3mountNomadNetworkPageTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72await Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3$nextTickTb4b4b4(Tb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3pendingTb4b4b4.Te6edf3lengthTb4b4b4)Tb4b4b4.Te6edf3toBeTb4b4b4(T79c0ff1Tb4b4b4)Tb4b4b4;
T8b949e// reject the initial mount fetch as if it was aborted by a new search
Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3onNodesSearchChangedTb4b4b4(Ta5d6ff"first"Tb4b4b4)Tb4b4b4;
Tff7b72await Te6edf3viTb4b4b4.Te6edf3advanceTimersByTimeAsyncTb4b4b4(T79c0ff500Tb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3pendingTb4b4b4.Te6edf3lengthTb4b4b4)Tb4b4b4.Te6edf3toBeTb4b4b4(T79c0ff2Tb4b4b4)Tb4b4b4;
Te6edf3pendingTb4b4b4[T79c0ff0Tb4b4b4]Tb4b4b4.Te6edf3rejectTb4b4b4(Tb4b4b4{ Te6edf3isCancelledTff7b72: Tff7b72true Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tff7b72await Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3$nextTickTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72await Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3$nextTickTb4b4b4(Tb4b4b4)Tb4b4b4;
T8b949e// the newer request is still in flight, so the indicator must stay on
Te6edf3expectTb4b4b4(Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3isSearchingNodesTb4b4b4)Tb4b4b4.Te6edf3toBeTb4b4b4(Tff7b72trueTb4b4b4)Tb4b4b4;
Te6edf3pendingTb4b4b4[T79c0ff1Tb4b4b4]Tb4b4b4.Te6edf3resolveTb4b4b4(Tb4b4b4{ Te6edf3dataTff7b72: Tb4b4b4{ Te6edf3announcesTff7b72: Tb4b4b4[Tb4b4b4]Tb4b4b4, Te6edf3total_countTff7b72: T79c0ff0 Tb4b4b4} Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tff7b72await Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3$nextTickTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72await Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3$nextTickTb4b4b4(Tb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3isSearchingNodesTb4b4b4)Tb4b4b4.Te6edf3toBeTb4b4b4(Tff7b72falseTb4b4b4)Tb4b4b4;
Te6edf3viTb4b4b4.Te6edf3useRealTimersTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Te6edf3itTb4b4b4(Ta5d6ff"loads node when destinationHash prop is provided"Tb4b4b4, Tff7b72async Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72const Te6edf3destHash Tff7b72= Ta5d6ff"0123456789abcdef0123456789abcdef"Tb4b4b4;
Te6edf3axiosMockTb4b4b4.Te6edf3getTb4b4b4.Te6edf3mockImplementationTb4b4b4(Tb4b4b4(Te6edf3urlTb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72if Tb4b4b4(Te6edf3url Tff7b72=== Ta5d6ff"/api/v1/announces"Tb4b4b4)
Tff7b72return Tffa657PromiseTb4b4b4.Te6edf3resolveTb4b4b4(Tb4b4b4{
Te6edf3dataTff7b72: Tb4b4b4{ Te6edf3announcesTff7b72: Tb4b4b4[Tb4b4b4{ Te6edf3destination_hashTff7b72: Te6edf3destHashTb4b4b4, Te6edf3display_nameTff7b72: Ta5d6ff"Test Node" Tb4b4b4}Tb4b4b4] Tb4b4b4}Tb4b4b4,
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3url Tff7b72=== Ta5d6ff"/api/v1/favourites"Tb4b4b4) Tff7b72return Tffa657PromiseTb4b4b4.Te6edf3resolveTb4b4b4(Tb4b4b4{ Te6edf3dataTff7b72: Tb4b4b4{ Te6edf3favouritesTff7b72: Tb4b4b4[Tb4b4b4] Tb4b4b4} Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tff7b72return Tffa657PromiseTb4b4b4.Te6edf3resolveTb4b4b4(Tb4b4b4{ Te6edf3dataTff7b72: Tb4b4b4{Tb4b4b4} Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3wrapper Tff7b72= Te6edf3mountNomadNetworkPageTb4b4b4(Tb4b4b4{ Te6edf3destinationHashTff7b72: Te6edf3destHash Tb4b4b4}Tb4b4b4)Tb4b4b4;
T8b949e// Manually set favourites to avoid undefined error if mock fails
Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3favourites Tff7b72= Tb4b4b4[Tb4b4b4]Tb4b4b4;
Tff7b72await Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3$nextTickTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72await Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3$nextTickTb4b4b4(Tb4b4b4)Tb4b4b4; T8b949e// Wait for fetch
Te6edf3expectTb4b4b4(Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3selectedNodeTb4b4b4.Te6edf3destination_hashTb4b4b4)Tb4b4b4.Te6edf3toBeTb4b4b4(Te6edf3destHashTb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Te6edf3itTb4b4b4(Ta5d6ff"toggles source view"Tb4b4b4, Tff7b72async Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72const Te6edf3destHash Tff7b72= Ta5d6ff"0123456789abcdef0123456789abcdef"Tb4b4b4;
Tff7b72const Te6edf3wrapper Tff7b72= Te6edf3mountNomadNetworkPageTb4b4b4(Tb4b4b4{ Te6edf3destinationHashTff7b72: Te6edf3destHash Tb4b4b4}Tb4b4b4)Tb4b4b4;
Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3favourites Tff7b72= Tb4b4b4[Tb4b4b4]Tb4b4b4;
Te6edf3wrapperTb4b4b4.Te6edf3setDataTb4b4b4(Tb4b4b4{
Te6edf3selectedNodeTff7b72: Tb4b4b4{ Te6edf3destination_hashTff7b72: Te6edf3destHashTb4b4b4, Te6edf3display_nameTff7b72: Ta5d6ff"Test Node" Tb4b4b4}Tb4b4b4,
Te6edf3nodePageContentTff7b72: Ta5d6ff"Page Content"Tb4b4b4,
Te6edf3nodePagePathTff7b72: Ta5d6ff"test:path"Tb4b4b4,
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tff7b72await Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3$nextTickTb4b4b4(Tb4b4b4)Tb4b4b4;
T8b949e// Find toggle source button by icon name
Tff7b72const Te6edf3buttons Tff7b72= Te6edf3wrapperTb4b4b4.Te6edf3findAllTb4b4b4(Ta5d6ff"button"Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3toggleSourceButton Tff7b72= Te6edf3buttonsTb4b4b4.Te6edf3findTb4b4b4(Tb4b4b4(Te6edf3bTb4b4b4) Tb4b4b4=> Te6edf3bTb4b4b4.Te6edf3htmlTb4b4b4(Tb4b4b4)Tb4b4b4.Te6edf3includesTb4b4b4(Ta5d6ff'data-icon-name="code-tags"'Tb4b4b4)Tb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3toggleSourceButtonTb4b4b4) Tb4b4b4{
Tff7b72await Te6edf3toggleSourceButtonTb4b4b4.Te6edf3triggerTb4b4b4(Ta5d6ff"click"Tb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3isShowingNodePageSourceTb4b4b4)Tb4b4b4.Te6edf3toBeTb4b4b4(Tff7b72trueTb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Te6edf3describeTb4b4b4(Ta5d6ff"showMicronRendererInMobileMenu"Tb4b4b4, Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Te6edf3itTb4b4b4(Ta5d6ff"is true on .mu page when wasm bundled and not in source view"Tb4b4b4, Tff7b72async Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72const Te6edf3dest Tff7b72= Ta5d6ff"a"Tb4b4b4.Te6edf3repeatTb4b4b4(T79c0ff32Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3wrapper Tff7b72= Te6edf3mountNomadNetworkPageTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72await Te6edf3wrapperTb4b4b4.Te6edf3setDataTb4b4b4(Tb4b4b4{
Te6edf3wasmBundledTff7b72: Tff7b72trueTb4b4b4,
Te6edf3selectedNodeTff7b72: Tb4b4b4{ Te6edf3destination_hashTff7b72: Te6edf3destTb4b4b4, Te6edf3display_nameTff7b72: Ta5d6ff"N" Tb4b4b4}Tb4b4b4,
Te6edf3nodePagePathTff7b72: Ta5d6ff`Tffd700${Te6edf3destTffd700}Ta5d6ff:/page/index.muTa5d6ff`Tb4b4b4,
Te6edf3isShowingNodePageSourceTff7b72: Tff7b72falseTb4b4b4,
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3showMicronRendererInMobileMenuTb4b4b4)Tb4b4b4.Te6edf3toBeTb4b4b4(Tff7b72trueTb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Te6edf3itTb4b4b4(Ta5d6ff"is false without selectedNode"Tb4b4b4, Tff7b72async Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72const Te6edf3dest Tff7b72= Ta5d6ff"c"Tb4b4b4.Te6edf3repeatTb4b4b4(T79c0ff32Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3wrapper Tff7b72= Te6edf3mountNomadNetworkPageTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72await Te6edf3wrapperTb4b4b4.Te6edf3setDataTb4b4b4(Tb4b4b4{
Te6edf3wasmBundledTff7b72: Tff7b72trueTb4b4b4,
Te6edf3selectedNodeTff7b72: Tff7b72nullTb4b4b4,
Te6edf3nodePagePathTff7b72: Ta5d6ff`Tffd700${Te6edf3destTffd700}Ta5d6ff:/page/index.muTa5d6ff`Tb4b4b4,
Te6edf3isShowingNodePageSourceTff7b72: Tff7b72falseTb4b4b4,
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3showMicronRendererInMobileMenuTb4b4b4)Tb4b4b4.Te6edf3toBeTb4b4b4(Tff7b72falseTb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Te6edf3itTb4b4b4(Ta5d6ff"is false in source view"Tb4b4b4, Tff7b72async Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72const Te6edf3dest Tff7b72= Ta5d6ff"b"Tb4b4b4.Te6edf3repeatTb4b4b4(T79c0ff32Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3wrapper Tff7b72= Te6edf3mountNomadNetworkPageTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72await Te6edf3wrapperTb4b4b4.Te6edf3setDataTb4b4b4(Tb4b4b4{
Te6edf3wasmBundledTff7b72: Tff7b72trueTb4b4b4,
Te6edf3selectedNodeTff7b72: Tb4b4b4{ Te6edf3destination_hashTff7b72: Te6edf3destTb4b4b4, Te6edf3display_nameTff7b72: Ta5d6ff"N" Tb4b4b4}Tb4b4b4,
Te6edf3nodePagePathTff7b72: Ta5d6ff`Tffd700${Te6edf3destTffd700}Ta5d6ff:/page/index.muTa5d6ff`Tb4b4b4,
Te6edf3isShowingNodePageSourceTff7b72: Tff7b72trueTb4b4b4,
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3showMicronRendererInMobileMenuTb4b4b4)Tb4b4b4.Te6edf3toBeTb4b4b4(Tff7b72falseTb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Te6edf3itTb4b4b4(Ta5d6ff"is false when wasm is not bundled"Tb4b4b4, Tff7b72async Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72const Te6edf3dest Tff7b72= Ta5d6ff"d"Tb4b4b4.Te6edf3repeatTb4b4b4(T79c0ff32Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3wrapper Tff7b72= Te6edf3mountNomadNetworkPageTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72await Te6edf3wrapperTb4b4b4.Te6edf3setDataTb4b4b4(Tb4b4b4{
Te6edf3wasmBundledTff7b72: Tff7b72falseTb4b4b4,
Te6edf3selectedNodeTff7b72: Tb4b4b4{ Te6edf3destination_hashTff7b72: Te6edf3destTb4b4b4, Te6edf3display_nameTff7b72: Ta5d6ff"N" Tb4b4b4}Tb4b4b4,
Te6edf3nodePagePathTff7b72: Ta5d6ff`Tffd700${Te6edf3destTffd700}Ta5d6ff:/page/index.muTa5d6ff`Tb4b4b4,
Te6edf3isShowingNodePageSourceTff7b72: Tff7b72falseTb4b4b4,
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3showMicronRendererInMobileMenuTb4b4b4)Tb4b4b4.Te6edf3toBeTb4b4b4(Tff7b72falseTb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Te6edf3itTb4b4b4(Ta5d6ff"is true on .mu page when URL has Nomad data suffix after backtick"Tb4b4b4, Tff7b72async Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72const Te6edf3dest Tff7b72= Ta5d6ff"e"Tb4b4b4.Te6edf3repeatTb4b4b4(T79c0ff32Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3wrapper Tff7b72= Te6edf3mountNomadNetworkPageTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72await Te6edf3wrapperTb4b4b4.Te6edf3setDataTb4b4b4(Tb4b4b4{
Te6edf3wasmBundledTff7b72: Tff7b72trueTb4b4b4,
Te6edf3selectedNodeTff7b72: Tb4b4b4{ Te6edf3destination_hashTff7b72: Te6edf3destTb4b4b4, Te6edf3display_nameTff7b72: Ta5d6ff"N" Tb4b4b4}Tb4b4b4,
Te6edf3nodePagePathTff7b72: Ta5d6ff`Tffd700${Te6edf3destTffd700}Ta5d6ff:/page/repo.muTa5d6ff\`Ta5d6ffg=reticulum|r=nomadnetTa5d6ff`Tb4b4b4,
Te6edf3isShowingNodePageSourceTff7b72: Tff7b72falseTb4b4b4,
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3nodePagePathIsMicronMuTb4b4b4)Tb4b4b4.Te6edf3toBeTb4b4b4(Tff7b72trueTb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3showMicronRendererInMobileMenuTb4b4b4)Tb4b4b4.Te6edf3toBeTb4b4b4(Tff7b72trueTb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Te6edf3describeTb4b4b4(Ta5d6ff"partials"Tb4b4b4, Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Te6edf3itTb4b4b4(Ta5d6ff"clearPartials resets partial state and timers"Tb4b4b4, Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72const Te6edf3wrapper Tff7b72= Te6edf3mountNomadNetworkPageTb4b4b4(Tb4b4b4)Tb4b4b4;
Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3pagePartials Tff7b72= Tb4b4b4{ Ta5d6ff"partial-0"Tff7b72: Ta5d6ff"<span>x</span>" Tb4b4b4}Tb4b4b4;
Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3loadedPartialIds Tff7b72= Tb4b4b4{ Ta5d6ff"partial-0"Tff7b72: Tff7b72true Tb4b4b4}Tb4b4b4;
Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3partialIdsByKey Tff7b72= Tb4b4b4{ Ta5d6ff"abc:path"Tff7b72: Tb4b4b4[Tb4b4b4] Tb4b4b4}Tb4b4b4;
Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3partialRefreshByKey Tff7b72= Tb4b4b4{ Ta5d6ff"abc:path"Tff7b72: T79c0ff10 Tb4b4b4}Tb4b4b4;
Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3partialRefreshTimers Tff7b72= Tb4b4b4{ Ta5d6ff"abc:path"Tff7b72: T79c0ff12345 Tb4b4b4}Tb4b4b4;
Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3clearPartialsTb4b4b4(Tb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3pagePartialsTb4b4b4)Tb4b4b4.Te6edf3toEqualTb4b4b4(Tb4b4b4{Tb4b4b4}Tb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3loadedPartialIdsTb4b4b4)Tb4b4b4.Te6edf3toEqualTb4b4b4(Tb4b4b4{Tb4b4b4}Tb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3partialIdsByKeyTb4b4b4)Tb4b4b4.Te6edf3toEqualTb4b4b4(Tb4b4b4{Tb4b4b4}Tb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3partialRefreshByKeyTb4b4b4)Tb4b4b4.Te6edf3toEqualTb4b4b4(Tb4b4b4{Tb4b4b4}Tb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3partialRefreshTimersTb4b4b4)Tb4b4b4.Te6edf3toEqualTb4b4b4(Tb4b4b4{Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Te6edf3itTb4b4b4(Ta5d6ff"processPartials does not call downloadNomadNetPage again after partials are marked loaded"Tb4b4b4, Tff7b72async Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72const Te6edf3dest Tff7b72= Ta5d6ff"a"Tb4b4b4.Te6edf3repeatTb4b4b4(T79c0ff32Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3wrapper Tff7b72= Te6edf3mountNomadNetworkPageTb4b4b4(Tb4b4b4)Tb4b4b4;
Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3selectedNode Tff7b72= Tb4b4b4{ Te6edf3destination_hashTff7b72: Te6edf3destTb4b4b4, Te6edf3display_nameTff7b72: Ta5d6ff"Test" Tb4b4b4}Tb4b4b4;
Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3nodePagePath Tff7b72= Ta5d6ff`Tffd700${Te6edf3destTffd700}Ta5d6ff:/page/index.muTa5d6ff`Tb4b4b4;
Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3nodePageContent Tff7b72= Ta5d6ff"`{" Tff7b72+ Te6edf3dest Tff7b72+ Ta5d6ff":/page/nested.mu}"Tb4b4b4;
Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3isShowingNodePageSource Tff7b72= Tff7b72falseTb4b4b4;
Tff7b72const Te6edf3downloadSpy Tff7b72= Te6edf3vi
Tb4b4b4.Te6edf3spyOnTb4b4b4(Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4, Ta5d6ff"downloadNomadNetPage"Tb4b4b4)
Tb4b4b4.Te6edf3mockImplementationTb4b4b4(Tb4b4b4(Te6edf3_dTb4b4b4, Te6edf3_pTb4b4b4, Te6edf3_fTb4b4b4, Te6edf3onSuccessTb4b4b4) Tb4b4b4=> Tb4b4b4{
Te6edf3onSuccessTb4b4b4(Ta5d6ff"# ok"Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tff7b72await Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3$nextTickTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72await Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3$nextTickTb4b4b4(Tb4b4b4)Tb4b4b4;
Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3processPartialsTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72await Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3$nextTickTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3afterFirst Tff7b72= Te6edf3downloadSpyTb4b4b4.Te6edf3mockTb4b4b4.Te6edf3callsTb4b4b4.Te6edf3lengthTb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3afterFirstTb4b4b4)Tb4b4b4.Te6edf3toBeGreaterThanOrEqualTb4b4b4(T79c0ff1Tb4b4b4)Tb4b4b4;
Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3processPartialsTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72await Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3$nextTickTb4b4b4(Tb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3downloadSpyTb4b4b4.Te6edf3mockTb4b4b4.Te6edf3callsTb4b4b4.Te6edf3lengthTb4b4b4)Tb4b4b4.Te6edf3toBeTb4b4b4(Te6edf3afterFirstTb4b4b4)Tb4b4b4;
Te6edf3downloadSpyTb4b4b4.Te6edf3mockRestoreTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Te6edf3itTb4b4b4(Ta5d6ff"does not re-run Micron conversion when only favourites list updates"Tb4b4b4, Tff7b72async Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72const Te6edf3dest Tff7b72= Ta5d6ff"b"Tb4b4b4.Te6edf3repeatTb4b4b4(T79c0ff32Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3wrapper Tff7b72= Te6edf3mountNomadNetworkPageTb4b4b4(Tb4b4b4)Tb4b4b4;
Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3selectedNode Tff7b72= Tb4b4b4{ Te6edf3destination_hashTff7b72: Te6edf3destTb4b4b4, Te6edf3display_nameTff7b72: Ta5d6ff"Test" Tb4b4b4}Tb4b4b4;
Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3nodePagePath Tff7b72= Ta5d6ff`Tffd700${Te6edf3destTffd700}Ta5d6ff:/page/index.muTa5d6ff`Tb4b4b4;
Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3nodePageContent Tff7b72= Ta5d6ff"# line one\n# line two"Tb4b4b4;
Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3isShowingNodePageSource Tff7b72= Tff7b72falseTb4b4b4;
Tff7b72await Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3$nextTickTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3parseSpy Tff7b72= Te6edf3viTb4b4b4.Te6edf3spyOnTb4b4b4(Te6edf3MicronParserTb4b4b4.Te6edf3prototypeTb4b4b4, Ta5d6ff"convertMicronToHtml"Tb4b4b4)Tb4b4b4;
Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3favourites Tff7b72= Tb4b4b4[Tb4b4b4{ Te6edf3destination_hashTff7b72: Ta5d6ff"x"Tb4b4b4, Te6edf3display_nameTff7b72: Ta5d6ff"Fav" Tb4b4b4}Tb4b4b4]Tb4b4b4;
Tff7b72await Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3$nextTickTb4b4b4(Tb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3parseSpyTb4b4b4)Tb4b4b4.Te6edf3notTb4b4b4.Te6edf3toHaveBeenCalledTb4b4b4(Tb4b4b4)Tb4b4b4;
Te6edf3parseSpyTb4b4b4.Te6edf3mockRestoreTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Te6edf3itTb4b4b4(Ta5d6ff"renderPageContent with .mu and pagePartials injects partial content"Tb4b4b4, Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72const Te6edf3dest Tff7b72= Ta5d6ff"a"Tb4b4b4.Te6edf3repeatTb4b4b4(T79c0ff32Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3wrapper Tff7b72= Te6edf3mountNomadNetworkPageTb4b4b4(Tb4b4b4)Tb4b4b4;
Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3pagePartials Tff7b72= Tb4b4b4{ Ta5d6ff"partial-0"Tff7b72: Ta5d6ff"<span>Loaded partial</span>" Tb4b4b4}Tb4b4b4;
Tff7b72const Te6edf3content Tff7b72= Ta5d6ff"Hello\n`{" Tff7b72+ Te6edf3dest Tff7b72+ Ta5d6ff":/page/partial.mu}\nWorld"Tb4b4b4;
Tff7b72const Te6edf3path Tff7b72= Te6edf3dest Tff7b72+ Ta5d6ff":/page/index.mu"Tb4b4b4;
Tff7b72const Te6edf3html Tff7b72= Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3renderPageContentTb4b4b4(Te6edf3pathTb4b4b4, Te6edf3contentTb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3htmlTb4b4b4)Tb4b4b4.Te6edf3toContainTb4b4b4(Ta5d6ff"Loaded partial"Tb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3htmlTb4b4b4)Tb4b4b4.Te6edf3notTb4b4b4.Te6edf3toContainTb4b4b4(Ta5d6ff"Loading..."Tb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3htmlTb4b4b4)Tb4b4b4.Te6edf3toContainTb4b4b4(Ta5d6ff"H"Tb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3htmlTb4b4b4)Tb4b4b4.Te6edf3toContainTb4b4b4(Ta5d6ff"W"Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Te6edf3itTb4b4b4(Ta5d6ff"renderPageContent without pagePartials shows placeholder for partial"Tb4b4b4, Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72const Te6edf3dest Tff7b72= Ta5d6ff"b"Tb4b4b4.Te6edf3repeatTb4b4b4(T79c0ff32Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3wrapper Tff7b72= Te6edf3mountNomadNetworkPageTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3content Tff7b72= Ta5d6ff"`{" Tff7b72+ Te6edf3dest Tff7b72+ Ta5d6ff":/page/partial.mu}"Tb4b4b4;
Tff7b72const Te6edf3path Tff7b72= Te6edf3dest Tff7b72+ Ta5d6ff":/page/index.mu"Tb4b4b4;
Tff7b72const Te6edf3html Tff7b72= Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3renderPageContentTb4b4b4(Te6edf3pathTb4b4b4, Te6edf3contentTb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3htmlTb4b4b4)Tb4b4b4.Te6edf3toContainTb4b4b4(Ta5d6ff"mu-partial"Tb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3htmlTb4b4b4)Tb4b4b4.Te6edf3toContainTb4b4b4(Ta5d6ff"Loading..."Tb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3htmlTb4b4b4)Tb4b4b4.Te6edf3toContainTb4b4b4(Ta5d6ff'data-dest="' Tff7b72+ Te6edf3dest Tff7b72+ Ta5d6ff'"'Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Te6edf3describeTb4b4b4(Ta5d6ff"page load stats"Tb4b4b4, Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Te6edf3itTb4b4b4(Ta5d6ff"formatShortDuration formats ms and seconds"Tb4b4b4, Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72const Te6edf3wrapper Tff7b72= Te6edf3mountNomadNetworkPageTb4b4b4(Tb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3formatShortDurationTb4b4b4(T79c0ff0Tb4b4b4)Tb4b4b4)Tb4b4b4.Te6edf3toBeTb4b4b4(Ta5d6ff"0 ms"Tb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3formatShortDurationTb4b4b4(T79c0ff500Tb4b4b4)Tb4b4b4)Tb4b4b4.Te6edf3toBeTb4b4b4(Ta5d6ff"500 ms"Tb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3formatShortDurationTb4b4b4(T79c0ff1500Tb4b4b4)Tb4b4b4)Tb4b4b4.Te6edf3toMatchTb4b4b4(Ta5d6ff/1\.5 s/Tb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3formatShortDurationTb4b4b4(T79c0ff120000Tb4b4b4)Tb4b4b4)Tb4b4b4.Te6edf3toMatchTb4b4b4(Ta5d6ff/2m/Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Te6edf3describeTb4b4b4(Ta5d6ff"isFailedPageContent"Tb4b4b4, Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72const Te6edf3failedCases Tff7b72= Tb4b4b4[
Tb4b4b4[Ta5d6ff"request_failed"Tb4b4b4]Tb4b4b4,
Tb4b4b4[Ta5d6ff"Failed loading page:"Tb4b4b4]Tb4b4b4,
Tb4b4b4[Ta5d6ff"Failed loading page: Could not establish link to destination."Tb4b4b4]Tb4b4b4,
Tb4b4b4[Ta5d6ff"Failed loading page: empty_response"Tb4b4b4]Tb4b4b4,
Tb4b4b4[Ta5d6ff"Failed loading page: request_failed"Tb4b4b4]Tb4b4b4,
Tb4b4b4]Tb4b4b4;
Te6edf3itTb4b4b4.Te6edf3eachTb4b4b4(Te6edf3failedCasesTb4b4b4)Tb4b4b4(Ta5d6ff"treats %s as failed load sentinel"Tb4b4b4, Tb4b4b4(Te6edf3contentTb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72const Te6edf3wrapper Tff7b72= Te6edf3mountNomadNetworkPageTb4b4b4(Tb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3isFailedPageContentTb4b4b4(Te6edf3contentTb4b4b4)Tb4b4b4)Tb4b4b4.Te6edf3toBeTb4b4b4(Tff7b72trueTb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3notFailedCases Tff7b72= Tb4b4b4[
Tb4b4b4[Tff7b72nullTb4b4b4]Tb4b4b4,
Tb4b4b4[Tff7b72undefinedTb4b4b4]Tb4b4b4,
Tb4b4b4[Ta5d6ff"# README\nTalk about failure modes here."Tb4b4b4]Tb4b4b4,
Tb4b4b4[Ta5d6ff"FAILURE is not how we detect errors"Tb4b4b4]Tb4b4b4,
Tb4b4b4[Ta5d6ff"partial_failure in prose"Tb4b4b4]Tb4b4b4,
Tb4b4b4[Ta5d6ff""Tb4b4b4]Tb4b4b4,
Tb4b4b4[Ta5d6ff"Download cancelled"Tb4b4b4]Tb4b4b4,
Tb4b4b4[Ta5d6ff"<p>success</p>"Tb4b4b4]Tb4b4b4,
Tb4b4b4]Tb4b4b4;
Te6edf3itTb4b4b4.Te6edf3eachTb4b4b4(Te6edf3notFailedCasesTb4b4b4)Tb4b4b4(Ta5d6ff"does not treat %s as failed load"Tb4b4b4, Tb4b4b4(Te6edf3contentTb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72const Te6edf3wrapper Tff7b72= Te6edf3mountNomadNetworkPageTb4b4b4(Tb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3isFailedPageContentTb4b4b4(Te6edf3contentTb4b4b4)Tb4b4b4)Tb4b4b4.Te6edf3toBeTb4b4b4(Tff7b72falseTb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3boundaryCases Tff7b72= Tb4b4b4[
Tb4b4b4[Ta5d6ff"phrase only mid-document"Tb4b4b4, Ta5d6ff"Something happened. Failed loading page: not a real prefix."Tb4b4b4, Tff7b72falseTb4b4b4]Tb4b4b4,
Tb4b4b4[Ta5d6ff"leading newline before meshchat prefix"Tb4b4b4, Ta5d6ff"\nFailed loading page: timeout"Tb4b4b4, Tff7b72falseTb4b4b4]Tb4b4b4,
Tb4b4b4[Ta5d6ff"leading spaces before meshchat prefix"Tb4b4b4, Ta5d6ff" Failed loading page: timeout"Tb4b4b4, Tff7b72falseTb4b4b4]Tb4b4b4,
Tb4b4b4[Ta5d6ff"wrong casing on meshchat prefix"Tb4b4b4, Ta5d6ff"failed loading page: timeout"Tb4b4b4, Tff7b72falseTb4b4b4]Tb4b4b4,
Tb4b4b4[Ta5d6ff"wrong casing on sentinel"Tb4b4b4, Ta5d6ff"REQUEST_FAILED"Tb4b4b4, Tff7b72falseTb4b4b4]Tb4b4b4,
Tb4b4b4[Ta5d6ff"sentinel with trailing space"Tb4b4b4, Ta5d6ff"request_failed "Tb4b4b4, Tff7b72falseTb4b4b4]Tb4b4b4,
Tb4b4b4[Ta5d6ff"sentinel with leading space"Tb4b4b4, Ta5d6ff" request_failed"Tb4b4b4, Tff7b72falseTb4b4b4]Tb4b4b4,
Tb4b4b4[Ta5d6ff"meshchat prefix substring only"Tb4b4b4, Ta5d6ff"PrefixedFailed loading page: no"Tb4b4b4, Tff7b72falseTb4b4b4]Tb4b4b4,
Tb4b4b4]Tb4b4b4;
Te6edf3itTb4b4b4.Te6edf3eachTb4b4b4(Te6edf3boundaryCasesTb4b4b4)Tb4b4b4(Ta5d6ff"boundary: %s"Tb4b4b4, Tb4b4b4(Te6edf3_labelTb4b4b4, Te6edf3contentTb4b4b4, Te6edf3expectedFailedTb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72const Te6edf3wrapper Tff7b72= Te6edf3mountNomadNetworkPageTb4b4b4(Tb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3isFailedPageContentTb4b4b4(Te6edf3contentTb4b4b4)Tb4b4b4)Tb4b4b4.Te6edf3toBeTb4b4b4(Te6edf3expectedFailedTb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Te6edf3itTb4b4b4(Ta5d6ff"non-string and boxed values are not matched as failed"Tb4b4b4, Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72const Te6edf3wrapper Tff7b72= Te6edf3mountNomadNetworkPageTb4b4b4(Tb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3isFailedPageContentTb4b4b4(T79c0ff123Tb4b4b4)Tb4b4b4)Tb4b4b4.Te6edf3toBeTb4b4b4(Tff7b72falseTb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3isFailedPageContentTb4b4b4(Tff7b72NaNTb4b4b4)Tb4b4b4)Tb4b4b4.Te6edf3toBeTb4b4b4(Tff7b72falseTb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3isFailedPageContentTb4b4b4(Tff7b72trueTb4b4b4)Tb4b4b4)Tb4b4b4.Te6edf3toBeTb4b4b4(Tff7b72falseTb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3isFailedPageContentTb4b4b4(Tff7b72falseTb4b4b4)Tb4b4b4)Tb4b4b4.Te6edf3toBeTb4b4b4(Tff7b72falseTb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3isFailedPageContentTb4b4b4(Tb4b4b4[Tb4b4b4]Tb4b4b4)Tb4b4b4)Tb4b4b4.Te6edf3toBeTb4b4b4(Tff7b72falseTb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3isFailedPageContentTb4b4b4(Tb4b4b4{ Te6edf3statusTff7b72: Ta5d6ff"failure" Tb4b4b4}Tb4b4b4)Tb4b4b4)Tb4b4b4.Te6edf3toBeTb4b4b4(Tff7b72falseTb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3isFailedPageContentTb4b4b4(Tff7b72new Tffa657StringTb4b4b4(Ta5d6ff"request_failed"Tb4b4b4)Tb4b4b4)Tb4b4b4)Tb4b4b4.Te6edf3toBeTb4b4b4(Tff7b72falseTb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3isFailedPageContentTb4b4b4(Tff7b72new Tffa657StringTb4b4b4(Ta5d6ff"Failed loading page: boxed"Tb4b4b4)Tb4b4b4)Tb4b4b4)Tb4b4b4.Te6edf3toBeTb4b4b4(Tff7b72falseTb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Te6edf3describeTb4b4b4(Ta5d6ff"hasPageLoadFailed"Tb4b4b4, Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72const Te6edf3destHash Tff7b72= Ta5d6ff"c"Tb4b4b4.Te6edf3repeatTb4b4b4(T79c0ff32Tb4b4b4)Tb4b4b4;
Te6edf3itTb4b4b4(Ta5d6ff"is false while loading even if content looks like an error string"Tb4b4b4, Tff7b72async Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72const Te6edf3wrapper Tff7b72= Te6edf3mountNomadNetworkPageTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72await Te6edf3wrapperTb4b4b4.Te6edf3setDataTb4b4b4(Tb4b4b4{
Te6edf3selectedNodeTff7b72: Tb4b4b4{ Te6edf3destination_hashTff7b72: Te6edf3destHashTb4b4b4, Te6edf3display_nameTff7b72: Ta5d6ff"N" Tb4b4b4}Tb4b4b4,
Te6edf3isLoadingNodePageTff7b72: Tff7b72trueTb4b4b4,
Te6edf3nodePageContentTff7b72: Ta5d6ff"Failed loading page: race"Tb4b4b4,
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3hasPageLoadFailedTb4b4b4)Tb4b4b4.Te6edf3toBeTb4b4b4(Tff7b72falseTb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Te6edf3itTb4b4b4(Ta5d6ff"is false without selected node even if nodePageContent is an error string"Tb4b4b4, Tff7b72async Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72const Te6edf3wrapper Tff7b72= Te6edf3mountNomadNetworkPageTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72await Te6edf3wrapperTb4b4b4.Te6edf3setDataTb4b4b4(Tb4b4b4{
Te6edf3selectedNodeTff7b72: Tff7b72nullTb4b4b4,
Te6edf3isLoadingNodePageTff7b72: Tff7b72falseTb4b4b4,
Te6edf3nodePageContentTff7b72: Ta5d6ff"Failed loading page: orphan"Tb4b4b4,
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3hasPageLoadFailedTb4b4b4)Tb4b4b4.Te6edf3toBeTb4b4b4(Tff7b72falseTb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Te6edf3itTb4b4b4(Ta5d6ff"is true when idle, node selected, and content matches failure detection"Tb4b4b4, Tff7b72async Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72const Te6edf3wrapper Tff7b72= Te6edf3mountNomadNetworkPageTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72await Te6edf3wrapperTb4b4b4.Te6edf3setDataTb4b4b4(Tb4b4b4{
Te6edf3selectedNodeTff7b72: Tb4b4b4{ Te6edf3destination_hashTff7b72: Te6edf3destHashTb4b4b4, Te6edf3display_nameTff7b72: Ta5d6ff"N" Tb4b4b4}Tb4b4b4,
Te6edf3isLoadingNodePageTff7b72: Tff7b72falseTb4b4b4,
Te6edf3nodePageContentTff7b72: Ta5d6ff"Failed loading page: done"Tb4b4b4,
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3hasPageLoadFailedTb4b4b4)Tb4b4b4.Te6edf3toBeTb4b4b4(Tff7b72trueTb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Te6edf3itTb4b4b4(Ta5d6ff"is false when idle with valid page prose mentioning failure"Tb4b4b4, Tff7b72async Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72const Te6edf3wrapper Tff7b72= Te6edf3mountNomadNetworkPageTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72await Te6edf3wrapperTb4b4b4.Te6edf3setDataTb4b4b4(Tb4b4b4{
Te6edf3selectedNodeTff7b72: Tb4b4b4{ Te6edf3destination_hashTff7b72: Te6edf3destHashTb4b4b4, Te6edf3display_nameTff7b72: Ta5d6ff"N" Tb4b4b4}Tb4b4b4,
Te6edf3isLoadingNodePageTff7b72: Tff7b72falseTb4b4b4,
Te6edf3nodePageContentTff7b72: Ta5d6ff"# Doc\nAvoid failure during deploy."Tb4b4b4,
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3hasPageLoadFailedTb4b4b4)Tb4b4b4.Te6edf3toBeTb4b4b4(Tff7b72falseTb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Te6edf3describeTb4b4b4(Ta5d6ff"parseNomadnetworkUrl"Tb4b4b4, Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Te6edf3itTb4b4b4(Ta5d6ff"parses absolute URL with query string"Tb4b4b4, Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72const Te6edf3wrapper Tff7b72= Te6edf3mountNomadNetworkPageTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3dest Tff7b72= Ta5d6ff"a"Tb4b4b4.Te6edf3repeatTb4b4b4(T79c0ff32Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3result Tff7b72= Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3parseNomadnetworkUrlTb4b4b4(Ta5d6ff`Tffd700${Te6edf3destTffd700}Ta5d6ff:/file/report.pdf?version=2&format=rawTa5d6ff`Tb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3resultTb4b4b4)Tb4b4b4.Te6edf3toEqualTb4b4b4(Tb4b4b4{
Te6edf3destination_hashTff7b72: Te6edf3destTb4b4b4,
Te6edf3pathTff7b72: Ta5d6ff"/file/report.pdf"Tb4b4b4,
Te6edf3queryTff7b72: Ta5d6ff"version=2&format=raw"Tb4b4b4,
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Te6edf3itTb4b4b4(Ta5d6ff"parses relative URL with query string"Tb4b4b4, Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72const Te6edf3wrapper Tff7b72= Te6edf3mountNomadNetworkPageTb4b4b4(Tb4b4b4)Tb4b4b4;
Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3defaultNodePagePath Tff7b72= Ta5d6ff"/page/index.mu"Tb4b4b4;
Tff7b72const Te6edf3result Tff7b72= Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3parseNomadnetworkUrlTb4b4b4(Ta5d6ff":/file/data.bin?key=val"Tb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3resultTb4b4b4)Tb4b4b4.Te6edf3toEqualTb4b4b4(Tb4b4b4{
Te6edf3destination_hashTff7b72: Tff7b72nullTb4b4b4,
Te6edf3pathTff7b72: Ta5d6ff"/file/data.bin"Tb4b4b4,
Te6edf3queryTff7b72: Ta5d6ff"key=val"Tb4b4b4,
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Te6edf3itTb4b4b4(Ta5d6ff"parses node-only URL without query"Tb4b4b4, Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72const Te6edf3wrapper Tff7b72= Te6edf3mountNomadNetworkPageTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3dest Tff7b72= Ta5d6ff"b"Tb4b4b4.Te6edf3repeatTb4b4b4(T79c0ff32Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3result Tff7b72= Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3parseNomadnetworkUrlTb4b4b4(Te6edf3destTb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3resultTb4b4b4)Tb4b4b4.Te6edf3toEqualTb4b4b4(Tb4b4b4{
Te6edf3destination_hashTff7b72: Te6edf3destTb4b4b4,
Te6edf3pathTff7b72: Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3defaultNodePagePathTb4b4b4,
Te6edf3queryTff7b72: Tff7b72nullTb4b4b4,
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Te6edf3itTb4b4b4(Ta5d6ff"parses absolute URL without query"Tb4b4b4, Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72const Te6edf3wrapper Tff7b72= Te6edf3mountNomadNetworkPageTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3dest Tff7b72= Ta5d6ff"c"Tb4b4b4.Te6edf3repeatTb4b4b4(T79c0ff32Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3result Tff7b72= Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3parseNomadnetworkUrlTb4b4b4(Ta5d6ff`Tffd700${Te6edf3destTffd700}Ta5d6ff:/page/index.muTa5d6ff`Tb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3resultTb4b4b4)Tb4b4b4.Te6edf3toEqualTb4b4b4(Tb4b4b4{
Te6edf3destination_hashTff7b72: Te6edf3destTb4b4b4,
Te6edf3pathTff7b72: Ta5d6ff"/page/index.mu"Tb4b4b4,
Te6edf3queryTff7b72: Tff7b72nullTb4b4b4,
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Te6edf3itTb4b4b4(Ta5d6ff"returns null for unsupported URL"Tb4b4b4, Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72const Te6edf3wrapper Tff7b72= Te6edf3mountNomadNetworkPageTb4b4b4(Tb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3parseNomadnetworkUrlTb4b4b4(Ta5d6ff"not-a-url"Tb4b4b4)Tb4b4b4)Tb4b4b4.Te6edf3toBeNullTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Te6edf3itTb4b4b4(Ta5d6ff"handles empty query string after ?"Tb4b4b4, Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72const Te6edf3wrapper Tff7b72= Te6edf3mountNomadNetworkPageTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3dest Tff7b72= Ta5d6ff"d"Tb4b4b4.Te6edf3repeatTb4b4b4(T79c0ff32Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3result Tff7b72= Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3parseNomadnetworkUrlTb4b4b4(Ta5d6ff`Tffd700${Te6edf3destTffd700}Ta5d6ff:/file/x.txt?Ta5d6ff`Tb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3resultTb4b4b4.Te6edf3pathTb4b4b4)Tb4b4b4.Te6edf3toBeTb4b4b4(Ta5d6ff"/file/x.txt"Tb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3resultTb4b4b4.Te6edf3queryTb4b4b4)Tb4b4b4.Te6edf3toBeTb4b4b4(Ta5d6ff""Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Te6edf3describeTb4b4b4(Ta5d6ff"downloadNomadNetFile"Tb4b4b4, Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72let Te6edf3WebSocketConnectionTb4b4b4;
Te6edf3beforeEachTb4b4b4(Tff7b72async Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
T8b949e// Re-import to get the mocked module
Te6edf3WebSocketConnection Tff7b72= Tb4b4b4(Tff7b72await Tff7b72importTb4b4b4(Ta5d6ff"@/js/WebSocketConnection"Tb4b4b4)Tb4b4b4)Tb4b4b4.Tff7b72defaultTb4b4b4;
Te6edf3WebSocketConnectionTb4b4b4.Te6edf3sendTb4b4b4.Te6edf3mockClearTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Te6edf3itTb4b4b4(Ta5d6ff"includes data in websocket payload when provided"Tb4b4b4, Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72const Te6edf3wrapper Tff7b72= Te6edf3mountNomadNetworkPageTb4b4b4(Tb4b4b4)Tb4b4b4;
Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3downloadNomadNetFileTb4b4b4(
Ta5d6ff"a"Tb4b4b4.Te6edf3repeatTb4b4b4(T79c0ff32Tb4b4b4)Tb4b4b4,
Ta5d6ff"/file/data.bin"Tb4b4b4,
Ta5d6ff"version=2&format=raw"Tb4b4b4,
Te6edf3viTb4b4b4.Te6edf3fnTb4b4b4(Tb4b4b4)Tb4b4b4,
Te6edf3viTb4b4b4.Te6edf3fnTb4b4b4(Tb4b4b4)Tb4b4b4,
Te6edf3viTb4b4b4.Te6edf3fnTb4b4b4(Tb4b4b4)
Tb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3WebSocketConnectionTb4b4b4.Te6edf3sendTb4b4b4)Tb4b4b4.Te6edf3toHaveBeenCalledOnceTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3payload Tff7b72= Tffa657JSONTb4b4b4.Te6edf3parseTb4b4b4(Te6edf3WebSocketConnectionTb4b4b4.Te6edf3sendTb4b4b4.Te6edf3mockTb4b4b4.Te6edf3callsTb4b4b4[T79c0ff0Tb4b4b4]Tb4b4b4[T79c0ff0Tb4b4b4]Tb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3payloadTb4b4b4.Te6edf3typeTb4b4b4)Tb4b4b4.Te6edf3toBeTb4b4b4(Ta5d6ff"nomadnet.file.download"Tb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3payloadTb4b4b4.Te6edf3nomadnet_file_downloadTb4b4b4.Te6edf3dataTb4b4b4)Tb4b4b4.Te6edf3toBeTb4b4b4(Ta5d6ff"version=2&format=raw"Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Te6edf3itTb4b4b4(Ta5d6ff"omits data field when data is null"Tb4b4b4, Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72const Te6edf3wrapper Tff7b72= Te6edf3mountNomadNetworkPageTb4b4b4(Tb4b4b4)Tb4b4b4;
Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3downloadNomadNetFileTb4b4b4(Ta5d6ff"b"Tb4b4b4.Te6edf3repeatTb4b4b4(T79c0ff32Tb4b4b4)Tb4b4b4, Ta5d6ff"/file/data.bin"Tb4b4b4, Tff7b72nullTb4b4b4, Te6edf3viTb4b4b4.Te6edf3fnTb4b4b4(Tb4b4b4)Tb4b4b4, Te6edf3viTb4b4b4.Te6edf3fnTb4b4b4(Tb4b4b4)Tb4b4b4, Te6edf3viTb4b4b4.Te6edf3fnTb4b4b4(Tb4b4b4)Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3payload Tff7b72= Tffa657JSONTb4b4b4.Te6edf3parseTb4b4b4(Te6edf3WebSocketConnectionTb4b4b4.Te6edf3sendTb4b4b4.Te6edf3mockTb4b4b4.Te6edf3callsTb4b4b4[T79c0ff0Tb4b4b4]Tb4b4b4[T79c0ff0Tb4b4b4]Tb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3payloadTb4b4b4.Te6edf3nomadnet_file_downloadTb4b4b4)Tb4b4b4.Te6edf3notTb4b4b4.Te6edf3toHavePropertyTb4b4b4(Ta5d6ff"data"Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Te6edf3itTb4b4b4(Ta5d6ff"omits data field when data is undefined"Tb4b4b4, Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72const Te6edf3wrapper Tff7b72= Te6edf3mountNomadNetworkPageTb4b4b4(Tb4b4b4)Tb4b4b4;
Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3downloadNomadNetFileTb4b4b4(Ta5d6ff"c"Tb4b4b4.Te6edf3repeatTb4b4b4(T79c0ff32Tb4b4b4)Tb4b4b4, Ta5d6ff"/file/data.bin"Tb4b4b4, Tff7b72undefinedTb4b4b4, Te6edf3viTb4b4b4.Te6edf3fnTb4b4b4(Tb4b4b4)Tb4b4b4, Te6edf3viTb4b4b4.Te6edf3fnTb4b4b4(Tb4b4b4)Tb4b4b4, Te6edf3viTb4b4b4.Te6edf3fnTb4b4b4(Tb4b4b4)Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3payload Tff7b72= Tffa657JSONTb4b4b4.Te6edf3parseTb4b4b4(Te6edf3WebSocketConnectionTb4b4b4.Te6edf3sendTb4b4b4.Te6edf3mockTb4b4b4.Te6edf3callsTb4b4b4[T79c0ff0Tb4b4b4]Tb4b4b4[T79c0ff0Tb4b4b4]Tb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3payloadTb4b4b4.Te6edf3nomadnet_file_downloadTb4b4b4)Tb4b4b4.Te6edf3notTb4b4b4.Te6edf3toHavePropertyTb4b4b4(Ta5d6ff"data"Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Te6edf3describeTb4b4b4(Ta5d6ff"browser context menu actions"Tb4b4b4, Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Te6edf3itTb4b4b4(Ta5d6ff"showPageSource enables source view when a page is loaded"Tb4b4b4, Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72const Te6edf3wrapper Tff7b72= Te6edf3mountNomadNetworkPageTb4b4b4(Tb4b4b4)Tb4b4b4;
Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3selectedNode Tff7b72= Tb4b4b4{ Te6edf3destination_hashTff7b72: Ta5d6ff"a"Tb4b4b4.Te6edf3repeatTb4b4b4(T79c0ff32Tb4b4b4)Tb4b4b4, Te6edf3display_nameTff7b72: Ta5d6ff"Node" Tb4b4b4}Tb4b4b4;
Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3nodePagePath Tff7b72= Ta5d6ff`Tffd700${Ta5d6ff"a"Tb4b4b4.Te6edf3repeatTb4b4b4(T79c0ff32Tb4b4b4)Tffd700}Ta5d6ff:/page/index.muTa5d6ff`Tb4b4b4;
Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3isShowingNodePageSource Tff7b72= Tff7b72falseTb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3showPageSourceTb4b4b4(Tb4b4b4)Tb4b4b4)Tb4b4b4.Te6edf3toBeTb4b4b4(Tff7b72trueTb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3isShowingNodePageSourceTb4b4b4)Tb4b4b4.Te6edf3toBeTb4b4b4(Tff7b72trueTb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Te6edf3itTb4b4b4(Ta5d6ff"showPageSource warns when no page path is loaded"Tb4b4b4, Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72const Te6edf3wrapper Tff7b72= Te6edf3mountNomadNetworkPageTb4b4b4(Tb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3showPageSourceTb4b4b4(Tb4b4b4)Tb4b4b4)Tb4b4b4.Te6edf3toBeTb4b4b4(Tff7b72falseTb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3ToastUtilsTb4b4b4.Te6edf3warningTb4b4b4)Tb4b4b4.Te6edf3toHaveBeenCalledWithTb4b4b4(Ta5d6ff"nomadnet.view_source_unavailable"Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Te6edf3itTb4b4b4(Ta5d6ff"downloadPageToDisk saves current page content"Tb4b4b4, Tff7b72async Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72const Te6edf3DownloadUtils Tff7b72= Tb4b4b4(Tff7b72await Tff7b72importTb4b4b4(Ta5d6ff"@/js/DownloadUtils"Tb4b4b4)Tb4b4b4)Tb4b4b4.Tff7b72defaultTb4b4b4;
Tff7b72const Te6edf3downloadFile Tff7b72= Te6edf3viTb4b4b4.Te6edf3spyOnTb4b4b4(Te6edf3DownloadUtilsTb4b4b4, Ta5d6ff"downloadFile"Tb4b4b4)Tb4b4b4.Te6edf3mockResolvedValueTb4b4b4(Tff7b72undefinedTb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3wrapper Tff7b72= Te6edf3mountNomadNetworkPageTb4b4b4(Tb4b4b4)Tb4b4b4;
Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3selectedNode Tff7b72= Tb4b4b4{ Te6edf3destination_hashTff7b72: Ta5d6ff"a"Tb4b4b4.Te6edf3repeatTb4b4b4(T79c0ff32Tb4b4b4)Tb4b4b4, Te6edf3display_nameTff7b72: Ta5d6ff"Node" Tb4b4b4}Tb4b4b4;
Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3nodePagePath Tff7b72= Ta5d6ff`Tffd700${Ta5d6ff"a"Tb4b4b4.Te6edf3repeatTb4b4b4(T79c0ff32Tb4b4b4)Tffd700}Ta5d6ff:/page/index.muTa5d6ff`Tb4b4b4;
Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3nodePageContent Tff7b72= Ta5d6ff"Hello Nomad"Tb4b4b4;
Te6edf3expectTb4b4b4(Tff7b72await Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3downloadPageToDiskTb4b4b4(Tb4b4b4)Tb4b4b4)Tb4b4b4.Te6edf3toBeTb4b4b4(Tff7b72trueTb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3downloadFileTb4b4b4)Tb4b4b4.Te6edf3toHaveBeenCalledWithTb4b4b4(Ta5d6ff"index.mu"Tb4b4b4, Te6edf3expectTb4b4b4.Te6edf3anyTb4b4b4(Te6edf3BlobTb4b4b4)Tb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3ToastUtilsTb4b4b4.Te6edf3successTb4b4b4)Tb4b4b4.Te6edf3toHaveBeenCalledWithTb4b4b4(Ta5d6ff"nomadnet.download_page_started"Tb4b4b4)Tb4b4b4;
Te6edf3downloadFileTb4b4b4.Te6edf3mockRestoreTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Te6edf3itTb4b4b4(Ta5d6ff"downloadPageToDisk warns when page content is unavailable"Tb4b4b4, Tff7b72async Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72const Te6edf3wrapper Tff7b72= Te6edf3mountNomadNetworkPageTb4b4b4(Tb4b4b4)Tb4b4b4;
Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3nodePagePath Tff7b72= Ta5d6ff`Tffd700${Ta5d6ff"a"Tb4b4b4.Te6edf3repeatTb4b4b4(T79c0ff32Tb4b4b4)Tffd700}Ta5d6ff:/page/index.muTa5d6ff`Tb4b4b4;
Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3nodePageContent Tff7b72= Tff7b72nullTb4b4b4;
Te6edf3expectTb4b4b4(Tff7b72await Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3downloadPageToDiskTb4b4b4(Tb4b4b4)Tb4b4b4)Tb4b4b4.Te6edf3toBeTb4b4b4(Tff7b72falseTb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3ToastUtilsTb4b4b4.Te6edf3warningTb4b4b4)Tb4b4b4.Te6edf3toHaveBeenCalledWithTb4b4b4(Ta5d6ff"nomadnet.download_page_unavailable"Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Te6edf3itTb4b4b4(Ta5d6ff"downloadPageToDisk reports download failures"Tb4b4b4, Tff7b72async Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72const Te6edf3DownloadUtils Tff7b72= Tb4b4b4(Tff7b72await Tff7b72importTb4b4b4(Ta5d6ff"@/js/DownloadUtils"Tb4b4b4)Tb4b4b4)Tb4b4b4.Tff7b72defaultTb4b4b4;
Tff7b72const Te6edf3downloadFile Tff7b72= Te6edf3viTb4b4b4.Te6edf3spyOnTb4b4b4(Te6edf3DownloadUtilsTb4b4b4, Ta5d6ff"downloadFile"Tb4b4b4)Tb4b4b4.Te6edf3mockRejectedValueTb4b4b4(Tff7b72new Tf85149ErrorTb4b4b4(Ta5d6ff"disk full"Tb4b4b4)Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3wrapper Tff7b72= Te6edf3mountNomadNetworkPageTb4b4b4(Tb4b4b4)Tb4b4b4;
Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3nodePagePath Tff7b72= Ta5d6ff`Tffd700${Ta5d6ff"a"Tb4b4b4.Te6edf3repeatTb4b4b4(T79c0ff32Tb4b4b4)Tffd700}Ta5d6ff:/page/index.muTa5d6ff`Tb4b4b4;
Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3nodePageContent Tff7b72= Ta5d6ff"Hello Nomad"Tb4b4b4;
Te6edf3expectTb4b4b4(Tff7b72await Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3downloadPageToDiskTb4b4b4(Tb4b4b4)Tb4b4b4)Tb4b4b4.Te6edf3toBeTb4b4b4(Tff7b72falseTb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3ToastUtilsTb4b4b4.Te6edf3errorTb4b4b4)Tb4b4b4.Te6edf3toHaveBeenCalledWithTb4b4b4(Ta5d6ff"nomadnet.download_page_failed"Tb4b4b4)Tb4b4b4;
Te6edf3downloadFileTb4b4b4.Te6edf3mockRestoreTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Te6edf3itTb4b4b4(Ta5d6ff"toggleFavouriteFromContext adds favourite and toasts success"Tb4b4b4, Tff7b72async Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Te6edf3axiosMockTb4b4b4.Te6edf3postTb4b4b4.Te6edf3mockResolvedValueOnceTb4b4b4(Tb4b4b4{ Te6edf3dataTff7b72: Tb4b4b4{Tb4b4b4} Tb4b4b4}Tb4b4b4)Tb4b4b4;
Te6edf3axiosMockTb4b4b4.Te6edf3getTb4b4b4.Te6edf3mockResolvedValueOnceTb4b4b4(Tb4b4b4{ Te6edf3dataTff7b72: Tb4b4b4{ Te6edf3favouritesTff7b72: Tb4b4b4[Tb4b4b4] Tb4b4b4} Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3wrapper Tff7b72= Te6edf3mountNomadNetworkPageTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3node Tff7b72= Tb4b4b4{ Te6edf3destination_hashTff7b72: Ta5d6ff"a"Tb4b4b4.Te6edf3repeatTb4b4b4(T79c0ff32Tb4b4b4)Tb4b4b4, Te6edf3display_nameTff7b72: Ta5d6ff"Node" Tb4b4b4}Tb4b4b4;
Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3selectedNode Tff7b72= Te6edf3nodeTb4b4b4;
Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3favourites Tff7b72= Tb4b4b4[Tb4b4b4]Tb4b4b4;
Te6edf3expectTb4b4b4(Tff7b72await Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3toggleFavouriteFromContextTb4b4b4(Tb4b4b4)Tb4b4b4)Tb4b4b4.Te6edf3toBeTb4b4b4(Tff7b72trueTb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3axiosMockTb4b4b4.Te6edf3postTb4b4b4)Tb4b4b4.Te6edf3toHaveBeenCalledWithTb4b4b4(Ta5d6ff"/api/v1/favourites/add"Tb4b4b4, Tb4b4b4{
Te6edf3destination_hashTff7b72: Te6edf3nodeTb4b4b4.Te6edf3destination_hashTb4b4b4,
Te6edf3display_nameTff7b72: Te6edf3nodeTb4b4b4.Te6edf3display_nameTb4b4b4,
Te6edf3aspectTff7b72: Ta5d6ff"nomadnetwork.node"Tb4b4b4,
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3ToastUtilsTb4b4b4.Te6edf3successTb4b4b4)Tb4b4b4.Te6edf3toHaveBeenCalledWithTb4b4b4(Ta5d6ff"nomadnet.favourite_added"Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Te6edf3itTb4b4b4(Ta5d6ff"resolveNodeForHash prefers favourite name over Unknown Node stub"Tb4b4b4, Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72const Te6edf3wrapper Tff7b72= Te6edf3mountNomadNetworkPageTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3hash Tff7b72= Ta5d6ff"a"Tb4b4b4.Te6edf3repeatTb4b4b4(T79c0ff32Tb4b4b4)Tb4b4b4;
Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3nodes Tff7b72= Tb4b4b4{Tb4b4b4}Tb4b4b4;
Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3favourites Tff7b72= Tb4b4b4[Tb4b4b4{ Te6edf3destination_hashTff7b72: Te6edf3hashTb4b4b4, Te6edf3display_nameTff7b72: Ta5d6ff"Saved Favourite" Tb4b4b4}Tb4b4b4]Tb4b4b4;
Tff7b72const Te6edf3resolved Tff7b72= Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3resolveNodeForHashTb4b4b4(Te6edf3hashTb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3resolvedTb4b4b4.Te6edf3display_nameTb4b4b4)Tb4b4b4.Te6edf3toBeTb4b4b4(Ta5d6ff"Saved Favourite"Tb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3resolvedTb4b4b4.Te6edf3destination_hashTb4b4b4)Tb4b4b4.Te6edf3toBeTb4b4b4(Te6edf3hashTb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Te6edf3itTb4b4b4(Ta5d6ff"addFavourite does not overwrite existing favourite with Unknown Node"Tb4b4b4, Tff7b72async Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Te6edf3axiosMockTb4b4b4.Te6edf3postTb4b4b4.Te6edf3mockResolvedValueOnceTb4b4b4(Tb4b4b4{ Te6edf3dataTff7b72: Tb4b4b4{Tb4b4b4} Tb4b4b4}Tb4b4b4)Tb4b4b4;
Te6edf3axiosMockTb4b4b4.Te6edf3getTb4b4b4.Te6edf3mockResolvedValueOnceTb4b4b4(Tb4b4b4{ Te6edf3dataTff7b72: Tb4b4b4{ Te6edf3favouritesTff7b72: Tb4b4b4[Tb4b4b4] Tb4b4b4} Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3wrapper Tff7b72= Te6edf3mountNomadNetworkPageTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3hash Tff7b72= Ta5d6ff"a"Tb4b4b4.Te6edf3repeatTb4b4b4(T79c0ff32Tb4b4b4)Tb4b4b4;
Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3favourites Tff7b72= Tb4b4b4[Tb4b4b4{ Te6edf3destination_hashTff7b72: Te6edf3hashTb4b4b4, Te6edf3display_nameTff7b72: Ta5d6ff"Kept Name" Tb4b4b4}Tb4b4b4]Tb4b4b4;
Tff7b72await Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3addFavouriteTb4b4b4(Tb4b4b4{
Te6edf3destination_hashTff7b72: Te6edf3hashTb4b4b4,
Te6edf3display_nameTff7b72: Ta5d6ff"Unknown Node"Tb4b4b4,
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3axiosMockTb4b4b4.Te6edf3postTb4b4b4)Tb4b4b4.Te6edf3toHaveBeenCalledWithTb4b4b4(Ta5d6ff"/api/v1/favourites/add"Tb4b4b4, Tb4b4b4{
Te6edf3destination_hashTff7b72: Te6edf3hashTb4b4b4,
Te6edf3display_nameTff7b72: Ta5d6ff"Kept Name"Tb4b4b4,
Te6edf3aspectTff7b72: Ta5d6ff"nomadnetwork.node"Tb4b4b4,
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Te6edf3itTb4b4b4(Ta5d6ff"addFavourite canonicalizes localized unknown names for new favourites"Tb4b4b4, Tff7b72async Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Te6edf3axiosMockTb4b4b4.Te6edf3postTb4b4b4.Te6edf3mockResolvedValueOnceTb4b4b4(Tb4b4b4{ Te6edf3dataTff7b72: Tb4b4b4{Tb4b4b4} Tb4b4b4}Tb4b4b4)Tb4b4b4;
Te6edf3axiosMockTb4b4b4.Te6edf3getTb4b4b4.Te6edf3mockResolvedValueOnceTb4b4b4(Tb4b4b4{ Te6edf3dataTff7b72: Tb4b4b4{ Te6edf3favouritesTff7b72: Tb4b4b4[Tb4b4b4] Tb4b4b4} Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3wrapper Tff7b72= Te6edf3mountNomadNetworkPageTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3hash Tff7b72= Ta5d6ff"b"Tb4b4b4.Te6edf3repeatTb4b4b4(T79c0ff32Tb4b4b4)Tb4b4b4;
Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3favourites Tff7b72= Tb4b4b4[Tb4b4b4]Tb4b4b4;
Tff7b72await Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3addFavouriteTb4b4b4(Tb4b4b4{
Te6edf3destination_hashTff7b72: Te6edf3hashTb4b4b4,
Te6edf3display_nameTff7b72: Ta5d6ff"Unbekannter Knoten"Tb4b4b4,
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3axiosMockTb4b4b4.Te6edf3postTb4b4b4)Tb4b4b4.Te6edf3toHaveBeenCalledWithTb4b4b4(Ta5d6ff"/api/v1/favourites/add"Tb4b4b4, Tb4b4b4{
Te6edf3destination_hashTff7b72: Te6edf3hashTb4b4b4,
Te6edf3display_nameTff7b72: Ta5d6ff"Unknown Node"Tb4b4b4,
Te6edf3aspectTff7b72: Ta5d6ff"nomadnetwork.node"Tb4b4b4,
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Te6edf3itTb4b4b4(Ta5d6ff"onNodeClick resolves favourite names through announce cache"Tb4b4b4, Tff7b72async Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72const Te6edf3wrapper Tff7b72= Te6edf3mountNomadNetworkPageTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3hash Tff7b72= Ta5d6ff"c"Tb4b4b4.Te6edf3repeatTb4b4b4(T79c0ff32Tb4b4b4)Tb4b4b4;
Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3nodes Tff7b72= Tb4b4b4{
Tb4b4b4[Te6edf3hashTb4b4b4]Tff7b72: Tb4b4b4{
Te6edf3destination_hashTff7b72: Te6edf3hashTb4b4b4,
Te6edf3display_nameTff7b72: Ta5d6ff"From Announce"Tb4b4b4,
Te6edf3aspectTff7b72: Ta5d6ff"nomadnetwork.node"Tb4b4b4,
Tb4b4b4}Tb4b4b4,
Tb4b4b4}Tb4b4b4;
Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3favourites Tff7b72= Tb4b4b4[Tb4b4b4{ Te6edf3destination_hashTff7b72: Te6edf3hashTb4b4b4, Te6edf3display_nameTff7b72: Ta5d6ff"Unknown Node" Tb4b4b4}Tb4b4b4]Tb4b4b4;
Tff7b72const Te6edf3loadSpy Tff7b72= Te6edf3viTb4b4b4.Te6edf3spyOnTb4b4b4(Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4, Ta5d6ff"loadNodePage"Tb4b4b4)Tb4b4b4.Te6edf3mockResolvedValueTb4b4b4(Tb4b4b4)Tb4b4b4;
Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3onNodeClickTb4b4b4(Tb4b4b4{ Te6edf3destination_hashTff7b72: Te6edf3hashTb4b4b4, Te6edf3display_nameTff7b72: Ta5d6ff"Unknown Node" Tb4b4b4}Tb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3selectedNodeTb4b4b4.Te6edf3display_nameTb4b4b4)Tb4b4b4.Te6edf3toBeTb4b4b4(Ta5d6ff"From Announce"Tb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3loadSpyTb4b4b4)Tb4b4b4.Te6edf3toHaveBeenCalledWithTb4b4b4(Te6edf3hashTb4b4b4, Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3defaultNodePagePathTb4b4b4)Tb4b4b4;
Te6edf3loadSpyTb4b4b4.Te6edf3mockRestoreTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Te6edf3itTb4b4b4(Ta5d6ff"onBulkAddFavouritesFromAnnounces uses canonical unknown sentinel"Tb4b4b4, Tff7b72async Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Te6edf3axiosMockTb4b4b4.Te6edf3postTb4b4b4.Te6edf3mockResolvedValueTb4b4b4(Tb4b4b4{ Te6edf3dataTff7b72: Tb4b4b4{Tb4b4b4} Tb4b4b4}Tb4b4b4)Tb4b4b4;
Te6edf3axiosMockTb4b4b4.Te6edf3getTb4b4b4.Te6edf3mockResolvedValueTb4b4b4(Tb4b4b4{ Te6edf3dataTff7b72: Tb4b4b4{ Te6edf3favouritesTff7b72: Tb4b4b4[Tb4b4b4] Tb4b4b4} Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3wrapper Tff7b72= Te6edf3mountNomadNetworkPageTb4b4b4(Tb4b4b4)Tb4b4b4;
Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3favourites Tff7b72= Tb4b4b4[Tb4b4b4]Tb4b4b4;
Tff7b72const Te6edf3hash Tff7b72= Ta5d6ff"d"Tb4b4b4.Te6edf3repeatTb4b4b4(T79c0ff32Tb4b4b4)Tb4b4b4;
Tff7b72await Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3onBulkAddFavouritesFromAnnouncesTb4b4b4(Tb4b4b4[Tb4b4b4{ Te6edf3destination_hashTff7b72: Te6edf3hashTb4b4b4, Te6edf3display_nameTff7b72: Ta5d6ff"未知节点" Tb4b4b4}Tb4b4b4]Tb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3axiosMockTb4b4b4.Te6edf3postTb4b4b4)Tb4b4b4.Te6edf3toHaveBeenCalledWithTb4b4b4(Ta5d6ff"/api/v1/favourites/add"Tb4b4b4, Tb4b4b4{
Te6edf3destination_hashTff7b72: Te6edf3hashTb4b4b4,
Te6edf3display_nameTff7b72: Ta5d6ff"Unknown Node"Tb4b4b4,
Te6edf3aspectTff7b72: Ta5d6ff"nomadnetwork.node"Tb4b4b4,
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Te6edf3itTb4b4b4(Ta5d6ff"toggleFavouriteFromContext reports API failures"Tb4b4b4, Tff7b72async Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Te6edf3axiosMockTb4b4b4.Te6edf3postTb4b4b4.Te6edf3mockRejectedValueOnceTb4b4b4(Tff7b72new Tf85149ErrorTb4b4b4(Ta5d6ff"network"Tb4b4b4)Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3wrapper Tff7b72= Te6edf3mountNomadNetworkPageTb4b4b4(Tb4b4b4)Tb4b4b4;
Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3selectedNode Tff7b72= Tb4b4b4{ Te6edf3destination_hashTff7b72: Ta5d6ff"a"Tb4b4b4.Te6edf3repeatTb4b4b4(T79c0ff32Tb4b4b4)Tb4b4b4, Te6edf3display_nameTff7b72: Ta5d6ff"Node" Tb4b4b4}Tb4b4b4;
Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3favourites Tff7b72= Tb4b4b4[Tb4b4b4]Tb4b4b4;
Te6edf3expectTb4b4b4(Tff7b72await Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3toggleFavouriteFromContextTb4b4b4(Tb4b4b4)Tb4b4b4)Tb4b4b4.Te6edf3toBeTb4b4b4(Tff7b72falseTb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3ToastUtilsTb4b4b4.Te6edf3errorTb4b4b4)Tb4b4b4.Te6edf3toHaveBeenCalledWithTb4b4b4(Ta5d6ff"nomadnet.context_menu_favourite_failed"Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Te6edf3itTb4b4b4(Ta5d6ff"onPageContextMenu delegates to browser tab actions when embedded"Tb4b4b4, Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72const Te6edf3openContextMenu Tff7b72= Te6edf3viTb4b4b4.Te6edf3fnTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3wrapper Tff7b72= Te6edf3mountNomadNetworkPageTb4b4b4(Tb4b4b4{ Te6edf3destinationHashTff7b72: Ta5d6ff""Tb4b4b4, Te6edf3embeddedTff7b72: Tff7b72true Tb4b4b4}Tb4b4b4)Tb4b4b4;
Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3nomadBrowserTabActions Tff7b72= Tb4b4b4{ Te6edf3openContextMenu Tb4b4b4}Tb4b4b4;
Tff7b72const Te6edf3event Tff7b72= Tb4b4b4{ Te6edf3clientXTff7b72: T79c0ff4Tb4b4b4, Te6edf3clientYTff7b72: T79c0ff8 Tb4b4b4}Tb4b4b4;
Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3onPageContextMenuTb4b4b4(Te6edf3eventTb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3openContextMenuTb4b4b4)Tb4b4b4.Te6edf3toHaveBeenCalledWithTb4b4b4(Te6edf3eventTb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Te6edf3itTb4b4b4(Ta5d6ff"runStandaloneContextAction closes menu after failures"Tb4b4b4, Tff7b72async Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72const Te6edf3wrapper Tff7b72= Te6edf3mountNomadNetworkPageTb4b4b4(Tb4b4b4)Tb4b4b4;
Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3standaloneContextMenuTb4b4b4.Te6edf3show Tff7b72= Tff7b72trueTb4b4b4;
Tff7b72await Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3runStandaloneContextActionTb4b4b4(Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72throw Tff7b72new Tf85149ErrorTb4b4b4(Ta5d6ff"boom"Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3ToastUtilsTb4b4b4.Te6edf3errorTb4b4b4)Tb4b4b4.Te6edf3toHaveBeenCalledWithTb4b4b4(Ta5d6ff"nomadnet.context_menu_action_failed"Tb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3standaloneContextMenuTb4b4b4.Te6edf3showTb4b4b4)Tb4b4b4.Te6edf3toBeTb4b4b4(Tff7b72falseTb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Te6edf3describeTb4b4b4(Ta5d6ff"embedded tab websocket isolation"Tb4b4b4, Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72const Te6edf3hashA Tff7b72= Ta5d6ff"a"Tb4b4b4.Te6edf3repeatTb4b4b4(T79c0ff32Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3hashB Tff7b72= Ta5d6ff"b"Tb4b4b4.Te6edf3repeatTb4b4b4(T79c0ff32Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3pagePath Tff7b72= Ta5d6ff"/page/index.mu"Tb4b4b4;
Tff7b72const Te6edf3emitPageDownload Tff7b72= Tb4b4b4(Te6edf3destinationHashTb4b4b4, Te6edf3statusTb4b4b4, Te6edf3extra Tff7b72= Tb4b4b4{Tb4b4b4}Tb4b4b4) Tb4b4b4=> Tb4b4b4(Tb4b4b4{
Te6edf3dataTff7b72: Tffa657JSONTb4b4b4.Te6edf3stringifyTb4b4b4(Tb4b4b4{
Te6edf3typeTff7b72: Ta5d6ff"nomadnet.page.download"Tb4b4b4,
Te6edf3download_idTff7b72: T79c0ff42Tb4b4b4,
Te6edf3nomadnet_page_downloadTff7b72: Tb4b4b4{
Te6edf3destination_hashTff7b72: Te6edf3destinationHashTb4b4b4,
Te6edf3page_pathTff7b72: Te6edf3pagePathTb4b4b4,
Te6edf3statusTb4b4b4,
Te6edf3page_contentTff7b72: Ta5d6ff"<p>other tab</p>"Tb4b4b4,
Tb4b4b4...Te6edf3extraTb4b4b4,
Tb4b4b4}Tb4b4b4,
Tb4b4b4}Tb4b4b4)Tb4b4b4,
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Te6edf3itTb4b4b4(Ta5d6ff"inactive embedded instance ignores another tab's archived page download"Tb4b4b4, Tff7b72async Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72const Te6edf3active Tff7b72= Te6edf3mountNomadNetworkPageTb4b4b4(Tb4b4b4{
Te6edf3destinationHashTff7b72: Ta5d6ff""Tb4b4b4,
Te6edf3embeddedTff7b72: Tff7b72trueTb4b4b4,
Te6edf3isActiveTff7b72: Tff7b72trueTb4b4b4,
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3inactive Tff7b72= Te6edf3mountNomadNetworkPageTb4b4b4(Tb4b4b4{
Te6edf3destinationHashTff7b72: Ta5d6ff""Tb4b4b4,
Te6edf3embeddedTff7b72: Tff7b72trueTb4b4b4,
Te6edf3isActiveTff7b72: Tff7b72falseTb4b4b4,
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tff7b72await Te6edf3activeTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3$nextTickTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72await Te6edf3inactiveTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3$nextTickTb4b4b4(Tb4b4b4)Tb4b4b4;
Te6edf3activeTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3selectedNode Tff7b72= Tb4b4b4{ Te6edf3destination_hashTff7b72: Te6edf3hashATb4b4b4, Te6edf3display_nameTff7b72: Ta5d6ff"A" Tb4b4b4}Tb4b4b4;
Te6edf3activeTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3nodePagePath Tff7b72= Ta5d6ff`Tffd700${Te6edf3hashATffd700}Ta5d6ff:Tffd700${Te6edf3pagePathTffd700}Ta5d6ff`Tb4b4b4;
Te6edf3activeTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3nodePageContent Tff7b72= Ta5d6ff"<p>tab a</p>"Tb4b4b4;
Te6edf3inactiveTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3selectedNode Tff7b72= Tb4b4b4{ Te6edf3destination_hashTff7b72: Te6edf3hashATb4b4b4, Te6edf3display_nameTff7b72: Ta5d6ff"A" Tb4b4b4}Tb4b4b4;
Te6edf3inactiveTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3nodePagePath Tff7b72= Ta5d6ff`Tffd700${Te6edf3hashATffd700}Ta5d6ff:Tffd700${Te6edf3pagePathTffd700}Ta5d6ff`Tb4b4b4;
Te6edf3inactiveTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3nodePageContent Tff7b72= Ta5d6ff"<p>tab a copy</p>"Tb4b4b4;
Tff7b72await Te6edf3inactiveTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3onWebsocketMessageTb4b4b4(Te6edf3emitPageDownloadTb4b4b4(Te6edf3hashBTb4b4b4, Ta5d6ff"success"Tb4b4b4, Tb4b4b4{ Te6edf3is_archived_versionTff7b72: Tff7b72true Tb4b4b4}Tb4b4b4)Tb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3activeTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3nodePageContentTb4b4b4)Tb4b4b4.Te6edf3toBeTb4b4b4(Ta5d6ff"<p>tab a</p>"Tb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3inactiveTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3nodePageContentTb4b4b4)Tb4b4b4.Te6edf3toBeTb4b4b4(Ta5d6ff"<p>tab a copy</p>"Tb4b4b4)Tb4b4b4;
Te6edf3activeTb4b4b4.Te6edf3unmountTb4b4b4(Tb4b4b4)Tb4b4b4;
Te6edf3inactiveTb4b4b4.Te6edf3unmountTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Te6edf3itTb4b4b4(Ta5d6ff"inactive embedded instance ignores started events without a callback"Tb4b4b4, Tff7b72async Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72const Te6edf3inactive Tff7b72= Te6edf3mountNomadNetworkPageTb4b4b4(Tb4b4b4{
Te6edf3destinationHashTff7b72: Ta5d6ff""Tb4b4b4,
Te6edf3embeddedTff7b72: Tff7b72trueTb4b4b4,
Te6edf3isActiveTff7b72: Tff7b72falseTb4b4b4,
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tff7b72await Te6edf3inactiveTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3$nextTickTb4b4b4(Tb4b4b4)Tb4b4b4;
Te6edf3inactiveTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3selectedNode Tff7b72= Tb4b4b4{ Te6edf3destination_hashTff7b72: Te6edf3hashATb4b4b4, Te6edf3display_nameTff7b72: Ta5d6ff"A" Tb4b4b4}Tb4b4b4;
Te6edf3inactiveTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3nodePagePath Tff7b72= Ta5d6ff`Tffd700${Te6edf3hashATffd700}Ta5d6ff:Tffd700${Te6edf3pagePathTffd700}Ta5d6ff`Tb4b4b4;
Te6edf3inactiveTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3nodePageContent Tff7b72= Ta5d6ff"<p>stable</p>"Tb4b4b4;
Tff7b72await Te6edf3inactiveTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3onWebsocketMessageTb4b4b4(Te6edf3emitPageDownloadTb4b4b4(Te6edf3hashBTb4b4b4, Ta5d6ff"started"Tb4b4b4)Tb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3inactiveTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3currentPageDownloadIdTb4b4b4)Tb4b4b4.Te6edf3toBeNullTb4b4b4(Tb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3inactiveTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3nodePageLoadPhaseTb4b4b4)Tb4b4b4.Te6edf3toBeNullTb4b4b4(Tb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3inactiveTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3nodePageContentTb4b4b4)Tb4b4b4.Te6edf3toBeTb4b4b4(Ta5d6ff"<p>stable</p>"Tb4b4b4)Tb4b4b4;
Te6edf3inactiveTb4b4b4.Te6edf3unmountTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Te6edf3itTb4b4b4(Ta5d6ff"active instance with callback still receives page download success"Tb4b4b4, Tff7b72async Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72const Te6edf3wrapper Tff7b72= Te6edf3mountNomadNetworkPageTb4b4b4(Tb4b4b4{
Te6edf3destinationHashTff7b72: Ta5d6ff""Tb4b4b4,
Te6edf3embeddedTff7b72: Tff7b72trueTb4b4b4,
Te6edf3isActiveTff7b72: Tff7b72trueTb4b4b4,
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tff7b72await Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3$nextTickTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3onSuccess Tff7b72= Te6edf3viTb4b4b4.Te6edf3fnTb4b4b4(Tb4b4b4)Tb4b4b4;
Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3nomadnetPageDownloadCallbacksTb4b4b4[Ta5d6ff`Tffd700${Te6edf3hashBTffd700}Ta5d6ff:Tffd700${Te6edf3pagePathTffd700}Ta5d6ff`Tb4b4b4] Tff7b72= Tb4b4b4{
Te6edf3onSuccessCallbackTff7b72: Te6edf3onSuccessTb4b4b4,
Tb4b4b4}Tb4b4b4;
Tff7b72await Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3onWebsocketMessageTb4b4b4(Te6edf3emitPageDownloadTb4b4b4(Te6edf3hashBTb4b4b4, Ta5d6ff"success"Tb4b4b4)Tb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3onSuccessTb4b4b4)Tb4b4b4.Te6edf3toHaveBeenCalledWithTb4b4b4(Ta5d6ff"<p>other tab</p>"Tb4b4b4)Tb4b4b4;
Te6edf3wrapperTb4b4b4.Te6edf3unmountTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────